import { Message } from 'view-design'
import { mapState } from 'vuex'
export default{
    computed: {
        ...mapState('admin/layout', ['currentAccount'])
    },
    methods: {
        // 审批通过状态下不能进行操作
        isChecked () {
            if (this.classObject.record.values[this.getReviewStrInfo(this.view)[this.getReviewStrInfo(this.view).checkStatus]] === '审批通过' || this.classObject.record.values[this.getReviewStrInfo(this.view).checkStatus] === '已审批') {
                Message.error('审批通过状态下不能进行该操作')
                return true;
            } else {
                return false;
            }
        },
        // 未审批状态下才能进行操作
        isUnChecked () {
            if (this.classObject.record.values[this.getReviewStrInfo(this.view).checkStatus] !== '未审批' && this.classObject.record.values[this.getReviewStrInfo(this.view).checkStatus] !== '待审批') {
                Message.error('未审批状态下才能进行该操作')
                return true;
            } else {
                return false;
            }
        },
        // 仅删除 1、未审批状态且 2、本人数据
        isDeleteFlag (ids) {
            let flag = false;
            let filterRecords = this.collectionObject.records.filter(item => ids.includes(item.id))
            filterRecords.forEach(record => {
                if (record.values[this.getReviewStrInfo(this.view).checkStatus] !== '' &&
                    record.values[this.getReviewStrInfo(this.view).checkStatus] !== '未审批' &&
                    record.values[this.getReviewStrInfo(this.view).checkStatus] !== '待审批' ||
                    this.currentAccount.account !== record.createdBy
                ) {
                    Message.error('仅删除未审批状态的本人数据')
                    flag = true;
                }
            })
            return flag;
        },
        // 反审：已审批状态且与审核人为同一人
        isReverseReviewValid () {
            if (this.classObject.record.values[this.getReviewStrInfo(this.view).checkStatus] !== '已审批' &&
                this.classObject.record.values[this.getReviewStrInfo(this.view).checkStatus] !== '审批通过' ||
                this.getPersonAccount(this.classObject.record.values[this.getReviewStrInfo(this.view).checkPersonStr]) !== this.currentAccount.account) {
                    Message.error('只能操作审批通过且与审核人为同一人的数据')
                    return true;
            } else {
                return false;
            }
        },
        /**
         * 维护执行记录页面，编辑/修改执行人/修改执行结果
         * 条件：当前用户需要是执行人其中之一且与审核人不能同一人
         */
        isExecutePersonValid () {
            let maintainerAccount = this.classObject.record.values.maintainer.map(d => d.personId)
            if (!maintainerAccount.includes(this.currentAccount.account) || this.getPersonAccount(this.classObject.record.values[this.getReviewStrInfo(this.view).checkPersonStr]) === this.currentAccount.account) {
                Message.error('当前用户需要是执行人其中之一且与审核人不能同一人')
                return true;
            } else {
                return false;
            }
        },
        /**
         *账号或者姓名的列表展示的处理
         * @param {*} person 数组，包含personId和personName
         * @returns
         */
        getPersonAccount (person) {
            if (!Array.isArray(person)) {
                return person
            } else {
                return person.map(d => d.personId).join(',')
            }
        },
        getPersonName (person) {
            if (!Array.isArray(person)) {
                return person
            } else {
                return person.map(d => d.personName).join(',')
            }
        }
    }
}
